package org.app.common.util;
/**
 * @FileName: MathUtil.java
 * @Package com.sfbest.lscm.common.util
 * 
 * @author zhangshaobin
 * @created 2013-5-23 下午5:41:56
 * 
 * Copyright 2011-2015 顺丰优选 版权所有
 */


import java.math.BigDecimal;
import java.text.DecimalFormat;

import org.apache.commons.lang3.StringUtils;

/**
 * <p>
 * 数字计算工具类
 * </p>
 * 
 * <PRE>
 * <BR>	修改记录
 * <BR>-----------------------------------------------
 * <BR>	修改日期			修改人			修改内容
 * </PRE>
 * 
 * @author zhangshaobin
 * @since 1.0
 * @version 1.0
 */
public class MathUtil {
	
	/**
	 * 
	 * 根据小数点位数获取double数据, 不足位数不补充零
	 *
	 * @author zhangshaobin
	 * @created 2013-5-23 下午5:50:38
	 *
	 * @param pointBackNum 小数点位数
	 * @param number 原始数据
	 * @return 一定小数位数的数字
	 */
	public static double getDecimal(int pointBackNum, double number){
		BigDecimal bd = new BigDecimal(number); 
		return bd.setScale(pointBackNum, BigDecimal.ROUND_HALF_UP).doubleValue();
	}
	
	/**
	 * 
	 * 获取小数点后5位， 不足补充零
	 *
	 * @author zhangshaobin
	 * @created 2013-5-23 下午6:06:10
	 *
	 * @param number 原始数据
	 * @return
	 */
	public static String getDoublePoint5FillZero(double number){
		DecimalFormat df = new DecimalFormat("#.00000");
		return df.format(number);
	}
	
	/**
	 * 
	 * 将分转换成元
	 *
	 * @author gengyang
	 * @created 2013-6-5 下午2:47:03
	 *
	 * @param money 分
	 * @return 元
	 */
	public static double fen2yuan(int money) {
		return money/100d;
	}
	
	/**
	 * 
	 * 将分转换成元
	 *
	 * @author gengyang
	 * @created 2013-6-5 下午2:47:03
	 *
	 * @param money 分
	 * @return 元
	 */
	public static double fen2yuan(double money) {
		return money/100d;
	}
	
	/**
	 * 
	 * 将元转换成分
	 *
	 * @author gengyang
	 * @created 2013-6-5 下午2:47:03
	 *
	 * @param money 元
	 * @return 分
	 */
	public static int yuan2fen(double money) {
		return Double.valueOf(money * 100).intValue();
	}

	/**
	 * 
	 * 加
	 *
	 * @author gengyang
	 * @created 2013-6-6 下午4:51:22
	 *
	 * @param num1 数1
	 * @param num2 数2
	 * @return 结果
	 */
	public static double add(double num1, double num2) {
		BigDecimal n1 = new BigDecimal(String.valueOf(num1));
		BigDecimal n2 = new BigDecimal(String.valueOf(num2));
		return n1.add(n2).doubleValue();
	}

	/**
	 * 减
	 *
	 * @author gengyang
	 * @created 2013-6-6 下午6:54:13
	 *
	 * @param num1 数1
	 * @param num2 数2
	 * @return 结果
	 */
	public static double subtract(double num1, double num2) {
		BigDecimal n1 = new BigDecimal(String.valueOf(num1));
		BigDecimal n2 = new BigDecimal(String.valueOf(num2));
		return n1.subtract(n2).doubleValue();
	}
	/**
	 * 
	 * 判断是否为整数
	 *
	 * @author guohongliang
	 * @created 2014-5-12 下午3:31:22
	 *
	 * @param str
	 * @return
	 */
	public static boolean isnumber(String str){
		if(StringUtils.isBlank(str)){
			return false;
		}
		return str.trim().matches("[\\d]+");
	}
}
